package co.edu.udea.iw.dao.service;

import java.util.List;

import co.edu.udea.iw.dao.ProductoDAO;
import co.edu.udea.iw.dao.SolicitudDAO;
import co.edu.udea.iw.dao.SucursalDAO;
import co.edu.udea.iw.dao.Tipo_SolicitudDAO;
import co.edu.udea.iw.dto.producto;
import co.edu.udea.iw.dto.solicitud;
import co.edu.udea.iw.dto.sucursal;
import co.edu.udea.iw.dto.tipo_solicitud;
import co.edu.udea.iw.exception.waDaoException;
import co.edu.udea.iw.exception.waServiceException;
import co.edu.udea.iw.util.validations.Validaciones;

public class solicitudService {

	private SolicitudDAO solicitudDAO;
	private ProductoDAO productoDAO;
	public ProductoDAO getProductoDAO() {
		return productoDAO;
	}

	public void setProductoDAO(ProductoDAO productoDAO) {
		this.productoDAO = productoDAO;
	}

	public SucursalDAO getSucursalDAO() {
		return sucursalDAO;
	}

	public void setSucursalDAO(SucursalDAO sucursalDAO) {
		this.sucursalDAO = sucursalDAO;
	}

	public Tipo_SolicitudDAO getTipo_SolicitudDAO() {
		return tipo_SolicitudDAO;
	}

	public void setTipo_SolicitudDAO(Tipo_SolicitudDAO tipo_SolicitudDAO) {
		this.tipo_SolicitudDAO = tipo_SolicitudDAO;
	}

	private SucursalDAO sucursalDAO;
	private Tipo_SolicitudDAO tipo_SolicitudDAO;

	public SolicitudDAO getSolicitudDAO() {
		return solicitudDAO;
	}

	public void setSolicitudDAO(SolicitudDAO solicitudDAO) {
		this.solicitudDAO = solicitudDAO;
	}

	public void guardarSolicitud(String id_solicitud, String nombre,
			String apellido, String telefono, String celular, String sucur,
			String product, String tipo_solicitud, String texto, String email,
			int estado) throws waDaoException, waServiceException {
		solicitud Solicitud = null;

		if (Validaciones.isTextoVacio(id_solicitud)) {
			throw new waServiceException("El id_solcitud no puede ser vacio");
		}

		if (Validaciones.isTextoVacio(nombre)) {
			throw new waServiceException("El nombre no puede ser vacio");
		}

		if (Validaciones.isTextoVacio(apellido)) {
			throw new waServiceException("El apellido no puede ser vacio");
		}

		if (Validaciones.isTextoVacio(telefono)) {
			throw new waServiceException("El id_solcitud no puede ser vacio");
		}

		if (Validaciones.isTextoVacio(celular)) {
			throw new waServiceException("El id_solcitud no puede ser vacio");
		}

		sucursal Sucursal = sucursalDAO.obtener(sucur);

		if (Sucursal == null) {

			throw new waServiceException(
					"El sucursal no se encuentra en la base de datos");

		}

		producto Producto = productoDAO.obtener(product);

		if (Producto == null) {

			throw new waServiceException(
					"El producto no se encuentra en la base de datos");

		}

		tipo_solicitud ts = tipo_SolicitudDAO.obtener(tipo_solicitud);

		if (ts == null) {

			throw new waServiceException(
					"El tipo de solocitud no se encuentra en la base de datos");

		}

		if (Validaciones.isTextoVacio(texto)) {
			throw new waServiceException("El texto no puede ser vacio");
		}

		if (Validaciones.isEmail(email) == false) {
			throw new waServiceException("El email no puede ser vacio");
		}

		if (estado == 0 || estado == 1) {

		} else {

			throw new waServiceException("El id_solcitud no puede ser vacio");

		}

		Solicitud = new solicitud();

		Solicitud.setApellido(apellido);
		Solicitud.setCelular(celular);
		Solicitud.setEmail(email);
		Solicitud.setEstado(estado);
		Solicitud.setId_solicitud(id_solicitud);
		Solicitud.setNombre(nombre);
		Solicitud.setTelefono(telefono);
		Solicitud.setTexto(texto);
		Solicitud.setTipo_producto(Producto);
		Solicitud.setTipo_solicitud(ts);
		Solicitud.setSucursal(Sucursal);

	}

	public List<solicitud> consultarSolicitudes() throws waDaoException {

		return solicitudDAO.Consultar();

	}

	public solicitud obtenerSolicitud(String id_solicitud)
			throws waDaoException, waServiceException {

		if (Validaciones.isTextoVacio(id_solicitud)) {
			throw new waServiceException("el id_solicitud  no puede ser vacio");
		}

		return solicitudDAO.obtener(id_solicitud);

	}

}
